// pages/tasks/tasks.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    tasks: [],
    isLoading: true,
    isEmpty: false,
    currentTab: 0,
    tabs: ['全部', '待整改', '已提交', '已完成'],
    statusFilter: '',
    userInfo: null,
    highlightTaskId: null, // 用于高亮显示通知中的任务
    urgentThreshold: 2 // 截止日期临近的天数阈值（小于等于这个天数就标记为紧急）
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    if (!userInfo) {
      wx.redirectTo({
        url: '/pages/login/login'
      });
      return;
    }

    this.setData({
      userInfo: userInfo
    });

    // 如果是从通知打开的页面，获取任务ID
    if (options && options.taskId) {
      this.setData({
        highlightTaskId: options.taskId
      });
      
      // 直接跳转到任务详情页
      wx.navigateTo({
        url: `/pages/taskDetail/taskDetail?id=${options.taskId}`
      });
    }

    // 加载任务数据
    this.fetchTasks();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示页面时刷新数据
    this.fetchTasks();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.fetchTasks().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 切换标签
   */
  switchTab: function(e) {
    const tabIndex = parseInt(e.currentTarget.dataset.index);
    let statusFilter = '';

    // 根据标签设置状态过滤条件
    switch (tabIndex) {
      case 0: statusFilter = ''; break; // 全部
      case 1: statusFilter = '待整改'; break;
      case 2: statusFilter = '已提交'; break;
      case 3: statusFilter = '已完成'; break;
    }

    this.setData({
      currentTab: tabIndex,
      statusFilter: statusFilter
    });

    this.fetchTasks();
  },

  /**
   * 获取任务列表
   */
  fetchTasks: function() {
    this.setData({ isLoading: true });
    
    const db = wx.cloud.database();
    const _ = db.command;
    let query = db.collection('tasks');

    // 根据用户角色筛选任务
    if (this.data.userInfo.role === '学生') {
      // 学生只能看到自己宿舍的任务
      query = query.where({
        building: this.data.userInfo.building,
        roomNo: this.data.userInfo.roomNo
      });
    } else if (this.data.userInfo.role === '宿管' && this.data.userInfo.building) {
      // 宿管只能看到自己管理的楼栋的任务
      query = query.where({
        building: _.in(this.data.userInfo.building)
      });
    }
    
    // 添加状态筛选
    if (this.data.statusFilter) {
      query = query.where({
        status: this.data.statusFilter
      });
    }
    
    // 按创建时间倒序排序，最近创建的在前
    return query.orderBy('createTime', 'desc')
      .get()
      .then(res => {
        // 格式化日期并检查紧急任务
        const today = new Date();
        const tasks = res.data.map(task => {
          const deadline = new Date(task.deadline);
          const daysToDeadline = Math.ceil((deadline - today) / (1000 * 60 * 60 * 24));
          
          return {
            ...task,
            deadline: this.formatDate(task.deadline),
            isHighlighted: task._id === this.data.highlightTaskId,
            isUrgent: daysToDeadline <= this.data.urgentThreshold && 
                      task.status !== '已完成' && daysToDeadline >= 0
          };
        });
        
        this.setData({
          tasks: tasks,
          isLoading: false,
          isEmpty: tasks.length === 0
        });
      })
      .catch(err => {
        console.error('获取任务列表失败', err);
        wx.showToast({
          title: '获取任务失败，请重试',
          icon: 'none'
        });
        this.setData({
          isLoading: false,
          isEmpty: true
        });
      });
  },

  /**
   * 格式化日期
   */
  formatDate: function(date) {
    if (!date) return '';
    
    const d = new Date(date);
    const year = d.getFullYear();
    const month = this.padZero(d.getMonth() + 1);
    const day = this.padZero(d.getDate());
    
    return `${year}-${month}-${day}`;
  },

  /**
   * 数字补零
   */
  padZero: function(num) {
    return num < 10 ? '0' + num : num;
  },

  /**
   * 点击任务项
   */
  onTaskTap: function(e) {
    const taskId = e.detail.taskId;
    wx.navigateTo({
      url: `/pages/taskDetail/taskDetail?id=${taskId}`
    });
  }
})